﻿/*
* Данный скрипт предназначен для формирования иерархии на основе
* выпадающего списка, требования к элементам следующие:
* * [число создаваемых отступов][пробел][имя элемента]
* * элементы должны быть предварительно отсортированы
* код для вызова:
* <script type="text/javascript" src="/_layouts/hierarhyCreator.js">
*
</script>
* <script type="text/javascript">
* // вызов с указание InternalName колонки
* ApplyToStyle(FindPopup("Activiti"));
*
</script>
*/
/**************************************************
* Создание строки отступов на основе длинны полученной
* из названия элемента
***************************************************/
function GetNbsp(len) {
    var t = "";
    var g = new Number(len);
    if (isNaN(g)) return "";
    for (n = 0; n < g; n++) {
        t = t + "&nbsp;&nbsp;";
    }
    return t;
}
/**************************************************
* Создание иерархии на основе выпадающего списка.
* Передается выпадающий список.
***************************************************/
function ApplyToStyle(popup) {
    var len = popup.options.length;
    for (z = len - 1; z > -1; z--) {
        var s = popup.options[z].innerHTML;
        var n = s.split(" ", 2);
        var res = GetNbsp(n[0]);
        n = s.split(" ");
        n.splice(0, 1);
        if (res == undefined) {
            popup.remove(z);
        }
        else {
            popup.options[z].innerHTML = res + n.join(" ");
        }
    }
}

/***************************
/* Поиск нужного нам поля внутреннему имени поля
/***************************/
function FindPopup(internalName) {
    var elements = document.getElementsByTagName("TD");
    // alert(elements.length);
    for (i = 0; i < elements.length; i++) {
        if (elements[i].className == "ms-formbody" || elements[i].getAttribute("class") == "ms-formbody") {
            var comments = elements[i].innerHTML;
            // alert(comments); 
            if (comments.indexOf('FieldInternalName="' + internalName + '"') > -1) {
                {
                    if (navigator.appName.indexOf("Microsoft") != -1)
                        return elements[i].childNodes[1].firstChild;
                    else
                        return elements[i].childNodes[3].firstChild;
                }
            }
        }
    }
    return;
}